import os
import media_handler
import library_viewer
import storage_manager

def display_main_menu():
    """打印主菜单选项到终端"""
    print("\n===== 个人书单/影单管理与推荐 =====")
    print("1. 添加新的书/影记录")
    print("2. 查看我的书单/影单")
    print("3. 修改书/影记录")
    print("4. 按条件筛选/搜索书/影")
    print("5. 随机推荐一本/一部未读/未看的")
    print("6. 退出程序")
    return input("请选择功能（1-6）：")

def main_loop():
    """主程序循环"""
    # 确保 data 目录存在，避免保存数据时出错
    os.makedirs('data', exist_ok=True)
    all_media = storage_manager.load_all_media_from_file()  # 加载所有数据

    while True:
        user_choice = display_main_menu()

        if user_choice == '1':
            new_media = media_handler.add_new_media_interaction()
            if new_media:
                storage_manager.save_media_item_to_file(new_media)
                print("记录已添加成功！")
                # 重新加载数据
                all_media = storage_manager.load_all_media_from_file()

        elif user_choice == '2':
            library_viewer.view_my_library_interaction(all_media)

        elif user_choice == '3':
            modified_media = media_handler.modify_media_item_interaction(all_media)
            if modified_media:  # 只有修改成功时才更新文件
                storage_manager.update_media_item_in_file(modified_media)
                print("媒体库已更新！")
                # 重新加载数据
                all_media = storage_manager.load_all_media_from_file()
            else:
                print("操作已取消或未做任何修改。")

        elif user_choice == '4':
            library_viewer.filter_or_search_interaction(all_media)

        elif user_choice == '5':
            library_viewer.recommend_media_interaction(all_media)

        elif user_choice == '6':
            print("感谢使用！再见！")
            break

        else:
            # 增加对非数字输入的处理，提升用户体验
            try:
                if 1 <= int(user_choice) <= 6:
                    pass
                else:
                    print("无效的选择，请重新输入。")
            except ValueError:
                print("无效的选择，请重新输入。")

if __name__ == "__main__":
    main_loop()